/*
 * roman_numeral_converter.h
 *
 *  Created on: 09.06.2014
 *      Author: Zejing Li
 */

#ifndef ROMAN_NUMERAL_CONVERTER_H_
#define ROMAN_NUMERAL_CONVERTER_H_

#include <string>
#include <vector>

namespace a {

class RomanNumeralConverter {
public:

	/*
	 * convert an Arabic numeral "arabic" to Roman numeral
	 */
	std::string convert(int arabic);

private:
	static const std::vector<std::string> romanParsingList;
	static const std::vector<std::string> romanAlphabetForDigitList;
	static const std::vector<std::string> parsingAssistList;

	/*
	 * convert one unit in Arabic Numeral system to the corresponding Roman Numeral
	 */
	std::vector<std::string> obtainRomanAlphabetForDigit(int position);

	/*
	 * find which line of the "romanTable" should be used
	 * for an Arabic unit "digit" at digit place "position"
	 */
	std::string convertDigit(int digit, int position);
};
}

#endif /* ROMAN_NUMERAL_CONVERTER_H_ */
